package cn.hicard.util;

import cn.hicard.risk.wsclient.wmgw.Wmgw;
import cn.hicard.risk.wsclient.wmgw.WmgwSoap;

/**
 * “深圳市梦网科技发展有限公司”提供的短信WebService功能封装。<br/>
 *   利用wsdl文件生成的客户端类位于包cn.hicard.risk.wsclient.wmgw下
 * @author zhangy
 *
 */
public class WmgwSms {

	/**
	 * 发送短信息
	 * @param message 短信内容
	 * @param mobileNumber 手机号码
	 * @return 短信发送结果的消息
	 */
	public static String sendMsg(String message, String mobileNumber) {
		
		// 短信帐户信息
		String smsUserId = AppConfig.get("callorder_sms_userid");
		String smsUserPass = AppConfig.get("callorder_sms_userpass");
				
		Wmgw wmgw = new Wmgw();
		WmgwSoap soap = wmgw.getWmgwSoap();
		String replyCode = soap.mongateCsSpSendSmsNew(smsUserId, smsUserPass, mobileNumber, message, 1, "*");
		// 短信服务商是这么说的：如果返回的流水大于10位小于25位为提交成功
		if(replyCode.length()>10 && replyCode.length()<25){
			return "发送 成功，WebService返回结果:" + replyCode;
		}else{
			return "发送 失败，WebService返回结果:" + replyCode + "-#" + codeToMsg(replyCode) + "#";
		}
	}

	/**
	 * 获取将返回代码的具体含义，内容来自服务商的说明文档
	 * @param replyCode
	 * @return
	 */
	private static String codeToMsg(String replyCode){
		// 短信发送部分
		if("-1".equals(replyCode)){
			return "参数为空。信息、电话号码等有空指针，登陆失败。";
		}
		if("-2".equals(replyCode)){
			return "电话号码个数超过100";
		}
		if("-10".equals(replyCode)){
			return "申请缓存空间失败";
		}
		if("-11".equals(replyCode)){
			return "电话号码中有非数字字符";
		}
		if("-12".equals(replyCode)){
			return "有异常电话号码";
		}
		if("-13".equals(replyCode)){
			return "电话号码个数与实际个数不相等";
		}
		if("-14".equals(replyCode)){
			return "实际号码个数超过100";
		}
		if("-101".equals(replyCode)){
			return "发送消息等待超时";
		}
		if("-102".equals(replyCode)){
			return "发送或接收消息失败";
		}
		if("-103".equals(replyCode)){
			return "接收消息超时";
		}
		if("-200".equals(replyCode)){
			return "其他错误";
		}
		
		// 通用部分
		if("-999".equals(replyCode)){
			return "短信Web服务器内部错误";
		}
		if("-10001".equals(replyCode)){
			return "用户登陆不成功";
		}
		if("-10002".equals(replyCode)){
			return "提交格式不正确";
		}
		if("-10003".equals(replyCode)){
			return "用户余额不足";
		}
		if("-10004".equals(replyCode)){
			return "手机号码不正确";
		}
		if("-10005".equals(replyCode)){
			return "计费用户帐号错误";
		}
		if("-10006".equals(replyCode)){
			return "计费用户密码错";
		}
		if("-10007".equals(replyCode)){
			return "账号已经被停用";
		}
		if("-10008".equals(replyCode)){
			return "账号类型不支持该功能";
		}
		if("-10009".equals(replyCode)){
			return "其它错误";
		}
		if("-10010".equals(replyCode)){
			return "企业代码不正确";
		}
		if("-10011".equals(replyCode)){
			return "信息内容超长";
		}
		if("-10012".equals(replyCode)){
			return "不能发送联通号码";
		}
		if("-10013".equals(replyCode)){
			return "操作员权限不够";
		}
		if("-10014".equals(replyCode)){
			return "费率代码不正确";
		}
		if("-10015".equals(replyCode)){
			return "服务器繁忙";
		}
		if("-10016".equals(replyCode)){
			return "企业权限不够";
		}
		if("-10017".equals(replyCode)){
			return "此时间段不允许发送";
		}
		if("-10018".equals(replyCode)){
			return "经销商用户名或密码错";
		}
		if("-10019".equals(replyCode)){
			return "手机列表或规则错误";
		}
		if("-10021".equals(replyCode)){
			return "没有开停户权限";
		}
		if("-10022".equals(replyCode)){
			return "没有转换用户类型的权限";
		}
		if("-10023".equals(replyCode)){
			return "没有修改用户所属经销商的权限";
		}
		if("-10024".equals(replyCode)){
			return "经销商用户名或密码错";
		}
		if("-10025".equals(replyCode)){
			return "操作员登陆名或密码错误";
		}
		if("-10026".equals(replyCode)){
			return "操作员所充值的用户不存在";
		}
		if("-10027".equals(replyCode)){
			return "操作员没有充值商务版的权限";
		}
		if("-10028".equals(replyCode)){
			return "该用户没有转正不能充值";
		}
		if("-10029".equals(replyCode)){
			return "此用户没有权限从此通道发送信息";
		}
		if("-10030".equals(replyCode)){
			return "不能发送移动号码";
		}
		if("-10031".equals(replyCode)){
			return "手机号码(段)非法";
		}
		if("-10032".equals(replyCode)){
			return "用户使用的费率代码错误";
		}
		if("-10033".equals(replyCode)){
			return "非法关键词";
		}
		return "未知错误代码";
	}
}
